#include<stdio.h>
#include<stdlib.h>
#include"DCLinkList.h"

// int main()
// {
//     DCLlist list;
//     InitDCLinkList(&list);
//     for(int i=0;i<10;i++)
//     {
//         // InsertTail(&list,i+1);
//         InsertHead(&list,i+1);
//     }
//     Travel(&list);
// }

// int main()
// {
//     DCLlist list;
//     InitDCLinkList(&list);
//     for(int i=0;i<10;i++)
//     {
//         InsertTail(&list,i+1);
//         // InsertHead(&list,i+1);
//     }
//     Travel(&list);

//     RemoveByIndex(&list,0);
//     Travel(&list);
// }

// int main()
// {
//     DCLlist list;
//     InitDCLinkList(&list);
//     for(int i=0;i<10;i++)
//     {
//         InsertTail(&list,1);
//         // InsertHead(&list,i+1);
//     }
//     Travel(&list);

//     RemoveByElement(&list,1);
//     Travel(&list);
// }


//约瑟夫环
int main()
{
    DCLlist list;
    InitDCLinkList(&list);
    for(int i=0;i<31;i++)
    {
        InsertTail(&list,i+1);
    }
    Travel(&list);
    struct Node *TravelPoint=list.head;
    int count=1;
    while(list.len!=1)
    {
        if(count!=3)
        {
            TravelPoint=TravelPoint->next;
        }
        else
        {
            // if(count==3)
            // {
                printf("%d out!",TravelPoint->data);
                struct Node *temp=TravelPoint->next;
                RemoveByElement(&list,TravelPoint->data);
                TravelPoint=temp;
                count=0;
            // }
        }
        count++;
        
    }
    printf("\n");
    printf("%d is alive!\n",list.head->data);
    Travel(&list);


}